<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QNetworkConfiguration Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">&#160;&#160;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QNetworkConfiguration Class Reference<br /><sup><sup>[<a href="qtnetwork.html">QtNetwork</a> module]</sup></sup></h1><p>The QNetworkConfiguration class provides an abstraction of one
or more access point configurations. <a href="#details">More...</a></p>

<h3>Types</h3><ul><li><div class="fn" />enum <b><a href="qnetworkconfiguration.html#BearerType-enum">BearerType</a></b> { BearerUnknown, BearerEthernet, BearerWLAN, Bearer2G, ..., BearerWiMAX }</li><li><div class="fn" />enum <b><a href="qnetworkconfiguration.html#Purpose-enum">Purpose</a></b> { UnknownPurpose, PublicPurpose, PrivatePurpose, ServiceSpecificPurpose }</li><li><div class="fn" />enum <b><a href="qnetworkconfiguration.html#StateFlag-enum">StateFlag</a></b> { Undefined, Defined, Discovered, Active }</li><li><div class="fn" />class <b><a href="qnetworkconfiguration-stateflags.html">StateFlags</a></b></li><li><div class="fn" />enum <b><a href="qnetworkconfiguration.html#Type-enum">Type</a></b> { InternetAccessPoint, ServiceNetwork, UserChoice, Invalid }</li></ul><h3>Methods</h3><ul><li><div class="fn" /><b><a href="qnetworkconfiguration.html#QNetworkConfiguration">__init__</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qnetworkconfiguration.html#QNetworkConfiguration-2">__init__</a></b> (<i>self</i>, QNetworkConfiguration&#160;<i>other</i>)</li><li><div class="fn" />QString <b><a href="qnetworkconfiguration.html#bearerName">bearerName</a></b> (<i>self</i>)</li><li><div class="fn" />BearerType <b><a href="qnetworkconfiguration.html#bearerType">bearerType</a></b> (<i>self</i>)</li><li><div class="fn" />QString <b><a href="qnetworkconfiguration.html#bearerTypeName">bearerTypeName</a></b> (<i>self</i>)</li><li><div class="fn" />list-of-QNetworkConfiguration <b><a href="qnetworkconfiguration.html#children">children</a></b> (<i>self</i>)</li><li><div class="fn" />QString <b><a href="qnetworkconfiguration.html#identifier">identifier</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qnetworkconfiguration.html#isRoamingAvailable">isRoamingAvailable</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qnetworkconfiguration.html#isValid">isValid</a></b> (<i>self</i>)</li><li><div class="fn" />QString <b><a href="qnetworkconfiguration.html#name">name</a></b> (<i>self</i>)</li><li><div class="fn" />Purpose <b><a href="qnetworkconfiguration.html#purpose">purpose</a></b> (<i>self</i>)</li><li><div class="fn" />StateFlags <b><a href="qnetworkconfiguration.html#state">state</a></b> (<i>self</i>)</li><li><div class="fn" />Type <b><a href="qnetworkconfiguration.html#type">type</a></b> (<i>self</i>)</li></ul><h3>Special Methods</h3><ul><li><div class="fn" />bool <b><a href="qnetworkconfiguration.html#__eq__">__eq__</a></b> (<i>self</i>, QNetworkConfiguration&#160;<i>cp</i>)</li><li><div class="fn" />bool <b><a href="qnetworkconfiguration.html#__ne__">__ne__</a></b> (<i>self</i>, QNetworkConfiguration&#160;<i>cp</i>)</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QNetworkConfiguration class provides an abstraction of one
or more access point configurations.</p>
<p>QNetworkConfiguration encapsulates a single access point or
service network. In most cases a single access point configuration
can be mapped to one network interface. However a single network
interface may not always map to only one access point
configuration. Multiple configurations for the same network device
may enable multiple access points. An example device that could
exhibit such a configuration might be a Smartphone which allows the
user to manage multiple WLAN configurations while the device itself
has only one WLAN network device.</p>
<p>The QNetworkConfiguration also supports the concept of service
networks. This concept allows the grouping of multiple access point
configurations into one entity. Such a group is called service
network and can be beneficial in cases whereby a network session to
a particular destination network is required (e.g. a company
network). When using a service network the user doesn't usually
care which one of the connectivity options is chosen (e.g.
corporate WLAN or VPN via GPRS) as long as he can reach the
company's target server. Depending on the current position and time
some of the access points that make up the service network may not
even be available. Furthermore automated access point roaming can
be enabled which enables the device to change the network interface
configuration dynamically while maintaining the applications
connection to the target network. It allows adaption to the
changing environment and may enable optimization with regards to
cost, speed or other network parameters.</p>
<p>Special configurations of type <a href="qnetworkconfiguration.html#Type-enum">UserChoice</a> provide a
placeholder configuration which is resolved to an actual network
configuration by the platform when a <a href="qnetworksession.html">session</a> is <a href="qnetworksession.html#open">opened</a>. Not all platforms support
the concept of a user choice configuration.</p>
<a id="configuration-states" name="configuration-states" />
<h3>Configuration states</h3>
<p>The list of available configurations can be obtained via
<a href="qnetworkconfigurationmanager.html#allConfigurations">QNetworkConfigurationManager.allConfigurations</a>().
A configuration can have multiple states. The <a href="qnetworkconfiguration.html#StateFlag-enum">Defined</a>
configuration state indicates that the configuration is stored on
the device. However the configuration is not yet ready to be
activated as e.g. a WLAN may not be available at the current
time.</p>
<p>The <a href="qnetworkconfiguration.html#StateFlag-enum">Discovered</a> state
implies that the configuration is <a href="qnetworkconfiguration.html#StateFlag-enum">Defined</a> and the
outside conditions are such that the configuration can be used
immediately to open a new network session. An example of such an
outside condition may be that the Ethernet cable is actually
connected to the device or that the WLAN with the specified SSID is
in range.</p>
<p>The <a href="qnetworkconfiguration.html#StateFlag-enum">Active</a> state
implies that the configuration is <a href="qnetworkconfiguration.html#StateFlag-enum">Discovered</a>. A
configuration in this state is currently being used by an
application. The underlying network interface has a valid IP
configuration and can transfer IP packets between the device and
the target network.</p>
<p>The <a href="qnetworkconfiguration.html#StateFlag-enum">Undefined</a> state
indicates that the system has knowledge of possible target networks
but cannot actually use that knowledge to connect to it. An example
for such a state could be an encrypted WLAN that has been
discovered but the user hasn't actually saved a configuration
including the required password which would allow the device to
connect to it.</p>
<p>Depending on the type of configuration some states are transient
in nature. A GPRS/UMTS connection may almost always be <a href="qnetworkconfiguration.html#StateFlag-enum">Discovered</a> if the
GSM/UMTS network is available. However if the GSM/UMTS network
looses the connection the associated configuration may change its
state from <a href="qnetworkconfiguration.html#StateFlag-enum">Discovered</a> to
<a href="qnetworkconfiguration.html#StateFlag-enum">Defined</a> as
well. A similar use case might be triggered by WLAN availability.
<a href="qnetworkconfigurationmanager.html#updateConfigurations">QNetworkConfigurationManager.updateConfigurations</a>()
can be used to manually trigger updates of states. Note that some
platforms do not require such updates as they implicitly change the
state once it has been discovered. If the state of a configuration
changes all related QNetworkConfiguration instances change their
state automatically.</p>
<hr /><h2>Type Documentation</h2><h3 class="fn"><a name="BearerType-enum" />QNetworkConfiguration.BearerType</h3><p>Specifies the type of bearer used by a configuration.</p>
<table class="valuelist">
<tr class="odd" valign="top">
<th class="tblConst">Constant</th>
<th class="tblval">Value</th>
<th class="tbldscr">Description</th>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerUnknown</tt></td>
<td class="topAlign"><tt>0</tt></td>
<td class="topAlign">The type of bearer is unknown or unspecified.
The <a href="qnetworkconfiguration.html#bearerTypeName">bearerTypeName</a>()
function may return additional information.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerEthernet</tt></td>
<td class="topAlign"><tt>1</tt></td>
<td class="topAlign">The configuration is for an Ethernet
interfaces.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerWLAN</tt></td>
<td class="topAlign"><tt>2</tt></td>
<td class="topAlign">The configuration is for a Wireless LAN
interface.</td>
</tr>
<tr>
<td class="topAlign"><tt>QNetworkConfiguration.Bearer2G</tt></td>
<td class="topAlign"><tt>3</tt></td>
<td class="topAlign">The configuration is for a CSD, GPRS, HSCSD,
EDGE or cdmaOne interface.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerCDMA2000</tt></td>
<td class="topAlign"><tt>4</tt></td>
<td class="topAlign">The configuration is for CDMA interface.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerWCDMA</tt></td>
<td class="topAlign"><tt>5</tt></td>
<td class="topAlign">The configuration is for W-CDMA/UMTS
interface.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerHSPA</tt></td>
<td class="topAlign"><tt>6</tt></td>
<td class="topAlign">The configuration is for High Speed Packet
Access (HSPA) interface.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerBluetooth</tt></td>
<td class="topAlign"><tt>7</tt></td>
<td class="topAlign">The configuration is for a Bluetooth
interface.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.BearerWiMAX</tt></td>
<td class="topAlign"><tt>8</tt></td>
<td class="topAlign">The configuration is for a WiMAX
interface.</td>
</tr>
</table>


<h3 class="fn"><a name="Purpose-enum" />QNetworkConfiguration.Purpose</h3><p>Specifies the purpose of the configuration.</p>
<table class="valuelist">
<tr class="odd" valign="top">
<th class="tblConst">Constant</th>
<th class="tblval">Value</th>
<th class="tbldscr">Description</th>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.UnknownPurpose</tt></td>
<td class="topAlign"><tt>0</tt></td>
<td class="topAlign">The configuration doesn't specify any purpose.
This is the default value.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.PublicPurpose</tt></td>
<td class="topAlign"><tt>1</tt></td>
<td class="topAlign">The configuration can be used for general
purpose internet access.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.PrivatePurpose</tt></td>
<td class="topAlign"><tt>2</tt></td>
<td class="topAlign">The configuration is suitable to access a
private network such as an office Intranet.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.ServiceSpecificPurpose</tt></td>
<td class="topAlign"><tt>3</tt></td>
<td class="topAlign">The configuration can be used for operator
specific services (e.g. receiving MMS messages or content
streaming).</td>
</tr>
</table>


<h3 class="fn"><a name="StateFlag-enum" />QNetworkConfiguration.StateFlag</h3><p>Specifies the configuration states.</p>
<table class="valuelist">
<tr class="odd" valign="top">
<th class="tblConst">Constant</th>
<th class="tblval">Value</th>
<th class="tbldscr">Description</th>
</tr>
<tr>
<td class="topAlign"><tt>QNetworkConfiguration.Undefined</tt></td>
<td class="topAlign"><tt>0x0000001</tt></td>
<td class="topAlign">This state is used for transient
configurations such as newly discovered WLANs for which the user
has not actually created a configuration yet.</td>
</tr>
<tr>
<td class="topAlign"><tt>QNetworkConfiguration.Defined</tt></td>
<td class="topAlign"><tt>0x0000002</tt></td>
<td class="topAlign">Defined configurations are known to the system
but are not immediately usable (e.g. a configured WLAN is not
within range or the Ethernet cable is currently not plugged into
the machine).</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.Discovered</tt></td>
<td class="topAlign"><tt>0x0000006</tt></td>
<td class="topAlign">A discovered configuration can be immediately
used to create a new <a href="qnetworksession.html">QNetworkSession</a>. An example of a
discovered configuration could be a WLAN which is within in range.
If the device moves out of range the discovered flag is dropped. A
second example is a GPRS configuration which generally remains
discovered for as long as the device has network coverage. A
configuration that has this state is also in state
QNetworkConfiguration.Defined. If the configuration is a service
network this flag is set if at least one of the underlying access
points configurations has the Discovered state.</td>
</tr>
<tr>
<td class="topAlign"><tt>QNetworkConfiguration.Active</tt></td>
<td class="topAlign"><tt>0x000000e</tt></td>
<td class="topAlign">The configuration is currently used by an open
network session (see <a href="qnetworksession.html#isOpen">QNetworkSession.isOpen</a>()).
However this does not mean that the current process is the entity
that created the open session. It merely indicates that if a new
<a href="qnetworksession.html">QNetworkSession</a> were to be
constructed based on this configuration <a href="qnetworksession.html#state">QNetworkSession.state</a>() would
return <a href="qnetworksession.html#State-enum">QNetworkSession.Connected</a>.
This state implies the QNetworkConfiguration.Discovered
state.</td>
</tr>
</table>
<p>The StateFlags type is a typedef for <a href="qflags.html">QFlags</a>&lt;StateFlag&gt;. It stores an OR
combination of StateFlag values.</p>


<h3 class="fn"><a name="Type-enum" />QNetworkConfiguration.Type</h3><p>This enum describes the type of configuration.</p>
<table class="valuelist">
<tr class="odd" valign="top">
<th class="tblConst">Constant</th>
<th class="tblval">Value</th>
<th class="tbldscr">Description</th>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.InternetAccessPoint</tt></td>
<td class="topAlign"><tt>0</tt></td>
<td class="topAlign">The configuration specifies the details for a
single access point. Note that configurations of type
InternetAccessPoint may be part of other QNetworkConfigurations of
type ServiceNetwork.</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.ServiceNetwork</tt></td>
<td class="topAlign"><tt>1</tt></td>
<td class="topAlign">The configuration is based on a group of
QNetworkConfigurations of type InternetAccessPoint. All group
members can reach the same target network. This type of
configuration is a mandatory requirement for roaming enabled
network sessions. On some platforms this form of configuration may
also be called Service Network Access Point (SNAP).</td>
</tr>
<tr>
<td class="topAlign">
<tt>QNetworkConfiguration.UserChoice</tt></td>
<td class="topAlign"><tt>2</tt></td>
<td class="topAlign">The configuration is a placeholder which will
be resolved to an actual configuration by the platform when a
session is opened. Depending on the platform the selection may
generate a popup dialog asking the user for his preferred
choice.</td>
</tr>
<tr>
<td class="topAlign"><tt>QNetworkConfiguration.Invalid</tt></td>
<td class="topAlign"><tt>3</tt></td>
<td class="topAlign">The configuration is invalid.</td>
</tr>
</table>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QNetworkConfiguration" />QNetworkConfiguration.__init__ (<i>self</i>)</h3><p>Constructs an invalid configuration object.</p>
<p><b>See also</b> <a href="qnetworkconfiguration.html#isValid">isValid</a>().</p>


<h3 class="fn"><a name="QNetworkConfiguration-2" />QNetworkConfiguration.__init__ (<i>self</i>, <a href="qnetworkconfiguration.html">QNetworkConfiguration</a>&#160;<i>other</i>)</h3><p>Creates a copy of the <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> object
contained in <i>other</i>.</p>


<h3 class="fn"><a name="bearerName" />QString QNetworkConfiguration.bearerName (<i>self</i>)</h3><p>This function is deprecated.</p>
<p>This function is deprecated. It is equivalent to calling
<a href="qnetworkconfiguration.html#bearerTypeName">bearerTypeName</a>(),
however <a href="qnetworkconfiguration.html#bearerType">bearerType</a>() should be
used in preference.</p>


<h3 class="fn"><a name="bearerType" /><a href="qnetworkconfiguration.html#BearerType-enum">BearerType</a> QNetworkConfiguration.bearerType (<i>self</i>)</h3><p>Returns the type of bearer used by this network
configuration.</p>
<p>If the bearer type is <a href="qnetworkconfiguration.html#BearerType-enum">unknown</a> the
<a href="qnetworkconfiguration.html#bearerTypeName">bearerTypeName</a>()
function can be used to retrieve a textural type name for the
bearer.</p>
<p>An invalid network configuration always returns the <a href="qnetworkconfiguration.html#BearerType-enum">BearerUnknown</a>
value.</p>


<h3 class="fn"><a name="bearerTypeName" />QString QNetworkConfiguration.bearerTypeName (<i>self</i>)</h3><p>Returns the type of bearer used by this network configuration as
a string.</p>
<p>The string is not translated and therefore can not be shown to
the user. The subsequent table shows the fixed mappings between
<a href="qnetworkconfiguration.html#BearerType-enum">BearerType</a>
and the bearer type name for known types. If the <a href="qnetworkconfiguration.html#BearerType-enum">BearerType</a> is
unknown this function may return additional information if it is
available; otherwise an empty string will be returned.</p>
<table class="generic">
<thead>
<tr class="qt-style">
<th><a href="qnetworkconfiguration.html#BearerType-enum">BearerType</a></th>
<th>Value</th>
</tr>
</thead>
<tr class="odd" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerUnknown</a></td>
<td />
<td>The session is based on an unknown or unspecified bearer type.
The value of the string returned describes the bearer type.</td>
</tr>
<tr class="even" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerEthernet</a></td>
<td>Ethernet</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerWLAN</a></td>
<td>WLAN</td>
</tr>
<tr class="even" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">Bearer2G</a></td>
<td>2G</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerCDMA2000</a></td>
<td>CDMA2000</td>
</tr>
<tr class="even" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerWCDMA</a></td>
<td>WCDMA</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerHSPA</a></td>
<td>HSPA</td>
</tr>
<tr class="even" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerBluetooth</a></td>
<td>Bluetooth</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qnetworkconfiguration.html#BearerType-enum">BearerWiMAX</a></td>
<td>WiMAX</td>
</tr>
</table>
<p>This function returns an empty string if this is an invalid
configuration, a network configuration of type <a href="qnetworkconfiguration.html#Type-enum">QNetworkConfiguration.ServiceNetwork</a>
or <a href="qnetworkconfiguration.html#Type-enum">QNetworkConfiguration.UserChoice</a>.</p>
<p><b>See also</b> <a href="qnetworkconfiguration.html#bearerType">bearerType</a>().</p>


<h3 class="fn"><a name="children" />list-of-QNetworkConfiguration QNetworkConfiguration.children (<i>self</i>)</h3><p>Returns all sub configurations of this network configuration in
priority order. The first sub configuration in the list has the
highest priority.</p>
<p>Only network configurations of type <a href="qnetworkconfiguration.html#Type-enum">ServiceNetwork</a> can have
children. Otherwise this function returns an empty list.</p>


<h3 class="fn"><a name="identifier" />QString QNetworkConfiguration.identifier (<i>self</i>)</h3><p>Returns the unique and platform specific identifier for this
network configuration; otherwise an empty string.</p>


<h3 class="fn"><a name="isRoamingAvailable" />bool QNetworkConfiguration.isRoamingAvailable (<i>self</i>)</h3><p>Returns true if this configuration supports roaming; otherwise
false.</p>


<h3 class="fn"><a name="isValid" />bool QNetworkConfiguration.isValid (<i>self</i>)</h3><p>Returns true if this <a href="qnetworkconfiguration.html">QNetworkConfiguration</a> object is
valid. A configuration may become invalid if the user deletes the
configuration or the configuration was default-constructed.</p>
<p>The addition and removal of configurations can be monitored via
the <a href="qnetworkconfigurationmanager.html">QNetworkConfigurationManager</a>.</p>
<p><b>See also</b> <a href="qnetworkconfigurationmanager.html">QNetworkConfigurationManager</a>.</p>


<h3 class="fn"><a name="name" />QString QNetworkConfiguration.name (<i>self</i>)</h3><p>Returns the user visible name of this configuration.</p>
<p>The name may either be the name of the underlying access point
or the name for service network that this configuration
represents.</p>


<h3 class="fn"><a name="purpose" /><a href="qnetworkconfiguration.html#Purpose-enum">Purpose</a> QNetworkConfiguration.purpose (<i>self</i>)</h3><p>Returns the purpose of this configuration.</p>
<p>The purpose field may be used to programmatically determine the
purpose of a configuration. Such information is usually part of the
access point or service network meta data.</p>


<h3 class="fn"><a name="state" /><a href="qnetworkconfiguration-stateflags.html">StateFlags</a> QNetworkConfiguration.state (<i>self</i>)</h3><p>Returns the current state of the configuration.</p>


<h3 class="fn"><a name="type" /><a href="qnetworkconfiguration.html#Type-enum">Type</a> QNetworkConfiguration.type (<i>self</i>)</h3><p>Returns the type of the configuration.</p>
<p>A configuration can represent a single access point
configuration or a set of access point configurations. Such a set
is called service network. A configuration that is based on a
service network can potentially support roaming of network
sessions.</p>


<h3 class="fn"><a name="__eq__" />bool QNetworkConfiguration.__eq__ (<i>self</i>, <a href="qnetworkconfiguration.html">QNetworkConfiguration</a>&#160;<i>cp</i>)</h3><h3 class="fn"><a name="__ne__" />bool QNetworkConfiguration.__ne__ (<i>self</i>, <a href="qnetworkconfiguration.html">QNetworkConfiguration</a>&#160;<i>cp</i>)</h3><address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt&#160;4.9.1 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2011</td><td align="right" width="25%">Qt&#160;4.8.0</td></tr></table></div></address></body></html>